package lagou.cn.homework


/**
  * 现有如下数据需要处理：
  * 字段：用户ID，位置ID，开始时间，停留时长（分钟）
  *
  * 4行样例数据：
  * UserA,LocationA,8,60 UserA,LocationA,9,60 UserB,LocationB,10,60 UserB,LocationB,11,80 样例数据中的数据含义是：用户UserA，在LocationA位置，从8点开始，停留了60钟
  *
  * 处理要求：
  * 1、对同一个用户，在同一个位置，连续的多条记录进行合并
  *
  * 2、合并原则：开始时间取最早时间，停留时长累计求和
  *
  * @param userName
  * @param location
  * @param beginTime
  * @param duration
  */

case class UserInfo(userName:String,location:String,beginTime:Int,duration:Int)

object TaskThreeDemo {
  def main(args: Array[String]): Unit = {
      var userInfos:List[UserInfo] = List(
          UserInfo("UserA","LocationA",8,60),
          UserInfo("UserA","LocationA",9,60),
          UserInfo("UserB","LocationB",10,60),
          UserInfo("UserB","LocationB",11,80)
      )

    var earlierTime:Int = 0

    userInfos.groupBy(e => e.userName + "-" + e.location)
      .mapValues(i => i.sortBy(x => x.beginTime))
      .mapValues(t => {
        earlierTime = t.head.beginTime
        t.map(x => x.duration).sum
      })
      .foreach{
        case (datas,sumTime) => println(s"$datas,$earlierTime,$sumTime")
      }
  }
}
